package ru.emms.codemeter.metrics.calculators;

import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import ru.emms.codemeter.metrics.MetricUtils;

import java.util.Collection;

/**
 * Created by IntelliJ IDEA.
 * User: dima.sam
 * Date: 03.08.2010
 * Time: 15:49:24
 *
 * Вычисление метрики Lines of code
 */
public class LinesOfCodeMetricCalculator
    implements MetricCalculator {

    private Logger log = Logger.getInstance(getClass().getName());

    /**
     * возвращает количество строк списка классов sources типа Long,
     *
     * @param sources коллекция исходников
     */
    @Override
    public Long calculate(Collection<PsiFile> sources) {
        Long linesCount = 0L;
        for (PsiElement myClass : sources) {
            String myClassText = myClass.getText();
            linesCount += MetricUtils.linesCount(myClassText);
        }
        log.debug("количество строк кода: " + linesCount);
        return linesCount;
    }

    public String toString() {
        return "LOC";
    }
}
